<?php

/**
 * php 变量与常量
 */

$var = '我是变量';


$foo = '传值赋值';
$bar = &$foo; // 引用赋值

// 可变变量
$var = 'hello';
$$var = '321';

echo "$var $hello"; // hello 321


// 预定义变量
// $GLOBALS
$b = 'b';
function out_b()
{
    echo $GLOBALS['b']; // b
    $GLOBALS['c'] = 'c';
}

out_b(); // b
echo $c ?? '';// c

// $_SERVER
// echo $_SERVER['HTTP_USER_AGENT']; //获取客户端代理字符串,
// echo $_SERVER['REQUEST_METHOD']; // 获取客户端请求方式 GET、POST
//
//
// echo $_SERVER['REMOTE_ADDR']; // 获取客户端IP 有可能是用户的IP，也可能是代理的IP
// echo $_SERVER['HTTP_CLIENT_IP']; // 获取客户端IP 代理端的IP，可能存在可伪造
// echo $_SERVER['HTTP_X_FORWARDER_FOR']; // 获取客户端IP 用户是在哪个IP使用的代理，可能存在，可以伪造
// echo $_SERVER['SERVER_ADDR']; // 获取服务端IP

/**
 * 获取客户端IP
 * @return mixed
 */
function get_client_ip()
{
    $ip = $_SERVER['REMOTE_ADDR'];
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    return $ip;
}

/**
 * 获取服务端IP
 * @return string
 */
function get_service_ip()
{
    // $_SERVER['SERVER_ADDR']
    if (!empty($_SERVER['SERVER_ADDR'])) {
        return $_SERVER['SERVER_ADDR'];
    }
    return gethostbyname($_SERVER['SERVER_NAME']);
}

echo get_client_ip();
echo get_service_ip();

echo 'ip list' . PHP_EOL;
$ip_list = gethostbynamel(gethostname());

foreach($ip_list as $item) {
    echo $item . PHP_EOL;
}


// 常量
define('TEST', 1);

const CONSTANT = '常量';

const ARR = ['a1', 'a2', 'a3'];


echo __LINE__;

echo __DIR__;

echo __FILE__;






